
#include "log.h"
#include "app_common.h"
#include "unistd.h"
#include <pthread.h>
//计算某个数的平方
static  int calc_sqr(int num )
{	
	sleep(1);
	return num*num;
}

static void *calc_sqr_fsync(void *arg)
{	
	sleep(1);
	// 强转为 int *
	int *num=(int *)arg;
	// 解引用取值
	int a= *num;
	// 求平方
	 int sqr= a*a;
	 //声明一个新指针
	 int *result= (int *)malloc(sizeof(int));
	 //把指针指向计算结果
	 *result=sqr;
	 return (void *)result;
}


int main(int argc, char const *argv[])
{
	int num[5]={1,2,3,4,5};
	int result[5]={0};
	int sum=0;
	// 计算每个值的平方
	long start=app_common_getcurtime_ms();
	pthread_t thread_id[5];

	for (int i = 0; i < 5; i++)
	{
		//result[i]= calc_sqr(num[i]);
		pthread_create(&thread_id[i],NULL, calc_sqr_fsync,&num[i]);
		//在这join可以吗 不行
	}

	for (size_t i = 0; i < 5; i++)
	{	 //准备一个int * 空指针
		 void *result_p;
		 pthread_join(thread_id[i] ,&result_p); //等待计算结果
		 int *result_int_p= (int *)result_p; //强转类型
		 result[i]=  *result_int_p; //解引用取值
	}
	
	
	for(int i = 0; i < 5; i++)
	{
		sum+=result[i];
	}
	 long end=app_common_getcurtime_ms();
	printf("time=%ld\n",end-start);
	printf("sum=%d\n",sum);

	return 0;
}
